.\" Copyright (c) 1983 Regents of the University of California.
.\" All rights reserved.  The Berkeley software License Agreement
.\" specifies the terms and conditions for redistribution.
.\"
.\"	@(#)telnet.1c	6.5 (Berkeley) 5/10/86
.\"
.TH TELNET 1 "May 10, 1986"
.UC 5
.SH NAME
telnet \- user interface to the \s-1TELNET\s0 protocol
.SH SYNOPSIS
telnet [
.I host
[
.I port
] ]
.SH DESCRIPTION
.I Telnet
is used to communicate with another host using the
.B TELNET
protocol.
If 
.I telnet
is invoked without arguments, it enters command mode,
indicated by its prompt (\*(lqtelnet>\*(rq).
In this mode, it accepts and executes the commands listed below.
If it is invoked with arguments, it performs an
.B open
command (see below) with those arguments.
.PP
Once a connection has been opened,
.I telnet
enters an input mode.
The input mode entered will be either \*(lqcharacter at a time\*(rq
or \*(lqline by line\*(rq
depending on what the remote system supports.
.PP
In \*(lqcharacter at a time\*(rq mode, most
text typed is immediately sent to the remote host for processing.
.PP
In \*(lqline by line\*(rq mode, all text is echoed locally,
and (normally) only completed lines are sent to the remote host.
The \*(lqlocal echo character\*(rq (initially \*(lq^E\*(rq) may be used
to turn off and on the local echo
(this would mostly be used to enter passwords
without the password being echoed).
.PP
In either mode, if the
.I localchars
toggle is TRUE (the default in line mode; see below),
the user's
.IR quit ,
.IR intr ,
and
.I flush
characters are trapped locally, and sent as
.B TELNET
protocol sequences to the remote side.
There are options (see
.B toggle
.I autoflush
and
.B toggle
.I autosynch
below)
which cause this action to flush subsequent output to the terminal
(until the remote host acknowledges the
.B TELNET
sequence) and flush previous terminal input
(in the case of
.I quit
and
.IR intr ).
.PP
While connected to a remote host,
.I telnet
command mode may be entered by typing the
.I telnet
\*(lqescape character\*(rq (initially \*(lq^]\*(rq).
When in command mode, the normal terminal editing conventions are available.
.PP
.B COMMANDS
.PP
The following commands are available.
Only enough of each command to uniquely identify it need be typed
(this is also true for arguments to the
.BR mode ,
.BR set ,
.BR toggle ,
and
.B display
commands).
.PP
.TP
.B open \fIhost\fP \fR[\fP \fIport\fP \fR]\fP
.br
Open a connection to the named host.
If no port number
is specified, 
.I telnet
will attempt to contact a
.B TELNET
server at the default port.
The host specification may be either a host name (see 
.IR hosts (5))
or an Internet address specified in the \*(lqdot notation\*(rq (see
.IR inet (3N)).
.TP
.B close
.br
Close a
.B TELNET
session and return to command mode.
.TP
.B quit
.br
Close any open
.B TELNET
session and exit 
.IR telnet .
An end of file (in command mode) will also close a session and exit.
.TP
.B z
.br
Suspend
.IR telnet .
This command only works when the user is using the 
.IR csh (1).
.TP
.B mode \fItype\fP
.br
.I Type
is either
.I line
(for \*(lqline by line\*(rq mode)
or
.I character
(for \*(lqcharacter at a time\*(rq mode).
The remote host is asked for permission to go into the requested mode.
If the remote host is capable of entering that mode, the requested
mode will be entered.
.TP
.B status
.br
Show the current status of 
.IR telnet .
This includes the peer one is connected to, as well
as the current mode.
.TP
.B display \fR[\fP \fIargument...\fP \fR]\fP
.br
Displays all, or some, of the
.B set
and
.B toggle
values (see below).
.TP
.B ? \fR[\fP \fIcommand\fP \fR]\fP
.br
Get help.  With no arguments,
.I telnet
prints a help summary.
If a command is specified, 
.I telnet
will print the help information for just that command.
.TP
.B send \fIarguments\fP
.br
Sends one or more special character sequences to the remote host.
The following are the arguments which may be specified
(more than one argument may be specified at a time):
.RS
.TP
.I escape
.br
Sends the current
.I telnet
escape character (initially \*(lq^]\*(rq).
.TP
.I synch
.br
Sends the
.B TELNET SYNCH
sequence.
This sequence causes the remote system to discard all previously typed
(but not yet read) input.
This sequence is sent as TCP urgent
data (and may not work if the remote system is a 4.2 BSD system -- if
it doesn't work, a lower case \*(lqr\*(rq may be echoed on the terminal).
.TP
.I brk
.br
Sends the
.B TELNET BRK
(Break) sequence, which may have significance to the remote
system.
.TP
.I ip
.br
Sends the
.B TELNET IP
(Interrupt Process) sequence, which should cause the remote
system to abort the currently running process.
.TP
.I ao
.br
Sends the
.B TELNET AO
(Abort Output) sequence, which should cause the remote system to flush
all output
.B from
the remote system
.B to
the user's terminal.
.TP
.I ayt
.br
Sends the
.B TELNET AYT
(Are You There)
sequence, to which the remote system may or may not choose to respond.
.TP
.I ec
.br
Sends the
.B TELNET EC
(Erase Character)
sequence, which should cause the remote system to erase the last character
entered.
.TP
.I el
.br
Sends the
.B TELNET EL
(Erase Line)
sequence, which should cause the remote system to erase the line currently
being entered.
.TP
.I ga
.br
Sends the
.B TELNET GA
(Go Ahead)
sequence, which likely has no significance to the remote system.
.TP
.I nop
.br
Sends the
.B TELNET NOP
(No OPeration)
sequence.
.TP
.I ?
.br
Prints out help information for the
.B send
command.
.RE
.TP
.B set \fIargument value\fP
.br
Set any one of a number of
.I telnet
variables to a specific value.
The special value \*(lqoff\*(rq turns off the function associated with
the variable.
The values of variables may be interrogated with the
.B display
command.
The variables which may be specified are:
.RS
.TP
.I echo
.br
This is the value (initially \*(lq^E\*(rq) which, when in
\*(lqline by line\*(rq mode, toggles between doing local echoing
of entered characters (for normal processing), and suppressing
echoing of entered characters (for entering, say, a password).
.TP
.I escape
.br
This is the
.I telnet
escape character (initially \*(lq^[\*(rq) which causes entry
into
.I telnet
command mode (when connected to a remote system).
.TP
.I interrupt
.br
If
.I telnet
is in
.I localchars
mode (see
.B toggle
.I localchars
below)
and the
.I interrupt
character is typed, a
.B TELNET IP
sequence (see
.B send
.I ip
above)
is sent to the remote host.
The initial value for the interrupt character is taken to be
the terminal's
.B intr
character.
.TP
.I quit
.br
If
.I telnet
is in
.I localchars
mode (see
.B toggle
.I localchars
below)
and the
.I quit
character is typed, a
.B TELNET BRK
sequence (see
.B send
.I brk
above)
is sent to the remote host.
The initial value for the quit character is taken to be
the terminal's
.B quit
character.
.TP
.I flushoutput
.br
If
.I telnet
is in
.I localchars
mode (see
.B toggle
.I localchars
below)
and the
.I flushoutput
character is typed, a
.B TELNET AO
sequence (see
.B send
.I ao
above)
is sent to the remote host.
The initial value for the flush character is taken to be
the terminal's
.B flush
character.
.TP
.I erase
.br
If
.I telnet
is in
.I localchars
mode (see
.B toggle
.I localchars
below),
.B and
if
.I telnet
is operating in \*(lqcharacter at a time\*(rq mode, then when this
character is typed, a
.B TELNET EC
sequence (see
.B send
.I ec
above)
is sent to the remote system.
The initial value for the erase character is taken to be
the terminal's
.B erase
character.
.TP
.I kill
.br
If
.I telnet
is in
.I localchars
mode (see
.B toggle
.I localchars
below),
.B and
if
.I telnet
is operating in \*(lqcharacter at a time\*(rq mode, then when this
character is typed, a
.B TELNET EL
sequence (see
.B send
.I el
above)
is sent to the remote system.
The initial value for the kill character is taken to be
the terminal's
.B kill
character.
.TP
.I eof
.br
If
.I telnet
is operating in \*(lqline by line\*(rq mode, entering this character
as the first character on a line will cause this character to be
sent to the remote system.
The initial value of the eof character is taken to be the terminal's
.B eof
character.
.RE
.TP
.B toggle \fIarguments...\fP
.br
Toggle (between
TRUE
and
FALSE)
various flags that control how
.I telnet
responds to events.
More than one argument may be specified.
The state of these flags may be interrogated with the
.B display
command.
Valid arguments are:
.RS
.TP
.I localchars
.br
If this is
TRUE,
then the
.IR flush ,
.IR interrupt ,
.IR quit ,
.IR erase ,
and
.I kill
characters (see
.B set
above) are recognized locally, and transformed into (hopefully) appropriate
.B TELNET
control sequences
(respectively
.IR ao ,
.IR ip ,
.IR brk ,
.IR ec ,
and
.IR el ;
see
.B send
above).
The initial value for this toggle is TRUE in \*(lqline by line\*(rq mode,
and FALSE in \*(lqcharacter at a time\*(rq mode.
.TP
.I autoflush
.br
If
.I autoflush
and
.I localchars
are both
TRUE,
then when the
.IR ao ,
.IR intr ,
or
.I quit
characters are recognized (and transformed into
.B TELNET
sequences; see
.B set
above for details),
.I telnet
refuses to display any data on the user's terminal
until the remote system acknowledges (via a
.B TELNET
.I Timing Mark
option)
that it has processed those
.B TELNET
sequences.
The initial value for this toggle is TRUE if the terminal user had not
done an "stty noflsh", otherwise FALSE (see
.IR stty(1)).
.TP
.I autosynch
If
.I autosynch
and
.I localchars
are both
TRUE,
then when either the
.I intr
or
.I quit
characters is typed (see
.B set
above for descriptions of the
.I intr
and
.I quit
characters), the resulting
.B TELNET
sequence sent is followed by the
.B TELNET SYNCH
sequence.
This procedure
.B should
cause the remote system to begin throwing away all previously
typed input until both of the
.B TELNET
sequences have been read and acted upon.
The initial value of this toggle is FALSE.
.TP
.I crmod
.br
Toggle carriage return mode.
When this mode is enabled, most carriage return characters received from
the remote host will be mapped into a carriage return followed by
a line feed.
This mode does not affect those characters typed by the user, only
those received from the remote host.
This mode is not very useful unless the remote host
only sends carriage return, but never line feed.
The initial value for this toggle is FALSE.
.TP
.I debug
.br
Toggles socket level debugging (useful only to the
.IR super user ).
The initial value for this toggle is FALSE.
.TP
.I options
.br
Toggles the display of some internal
.I telnet
protocol processing (having to do with
.B TELNET
options).
The initial value for this toggle is FALSE.
.TP
.I netdata
.br
Toggles the display of all network data (in hexadecimal format).
The initial value for this toggle is FALSE.
.TP
.I ?
.br
Displays the legal
.B toggle
commands.
.RE
.SH BUGS
.PP
There is no adequate way for dealing with flow control.
.PP
On some remote systems, echo has to be turned off manually when in
\*(lqline by line\*(rq mode.
.PP
There is enough settable state to justify a
.RI . telnetrc
file.
.PP
No capability for a
.RI . telnetrc
file is provided.
.PP
In \*(lqline by line\*(rq mode, the terminal's
.I eof
character is only recognized (and sent to the remote system)
when it is the first character on a line.
